package main
import (
	"fmt"
	"strings"
)
//闭包的使用
func AddUper() func (int)int{
	var n int = 10  //n 会因为调用f函数而不断累加，类似全局变量，只初始化一次~~
	return func (x int)int{
		n += x
		return  n
	}
}

//闭包的实践，判断某字符串是否有某后缀
func makeSuffix(suffix string) func (string)string{ //引用到的变量会保存下来，不用每次都传入后缀字符串参数
	return func (name string)string{
		if !strings.HasSuffix(name,suffix) {
			return name+suffix
		}
		return name
	}
}


func main(){
	//测试累加AddUper
	f := AddUper()
	fmt.Println("===!!!===",f(1)) //11
	fmt.Println("===!!!===",f(2)) //13

	//测试makeSuffix   //以下就是闭包的好处 闭包实际上就是一个函数，类似一个类
	f2 := makeSuffix(".jpg")
	fmt.Println("文件处理后 = ",f2("winter"))
	fmt.Println("文件处理后 = ",f2("loser.jpg"))
}